package muni.ilo.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import muni.ilo.dto.DistritoDTO;
import muni.ilo.dto.TipoUsuarioDTO;
import muni.ilo.dto.UsuarioDTO;
import muni.ilo.service.ApplicationBusinessDelegate;
import muni.ilo.service.UsuarioIFService;



public class UsuarioServlet extends HttpServlet {
	
	private static final long serialVersionUID = 1L;
   
	ApplicationBusinessDelegate abd = new ApplicationBusinessDelegate();
	UsuarioIFService servicio = abd.getUsuarioService();
	
	
	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response)
										throws ServletException, IOException {
		
		String voperacion = request.getParameter("operacion");
		
		if(voperacion.equals("listar")){
			this.listar(request,response);
		}if(voperacion.equals("desactivar")){
			this.desactivar(request,response);
		}if(voperacion.equals("activar")){
			this.activar(request,response);
		}if(voperacion.equals("insertar")){
			this.insertar(request,response);
		}if(voperacion.equals("cargaModifica")){
			this.cargarDatos(request,response);
		}if(voperacion.equals("modificar")){
			this.modificarDatos(request,response);
		}if(voperacion.equals("nuevousuario")){
			this.nuevoUsuario(request,response);
		}
		
		
	}


	private void modificarDatos(HttpServletRequest request, HttpServletResponse response) {
		
		java.util.Date dtFechaAct = new Date();
		SimpleDateFormat sdfFormateador = new SimpleDateFormat("dd/MM/yy"); 
		String strFecReg = request.getParameter("fecreg");
		String strFecAct = sdfFormateador.format(dtFechaAct);
		
		UsuarioDTO objUsua = new UsuarioDTO();
		
		try {
			objUsua.setCodigo(request.getParameter("cod"));
			objUsua.setNombre(request.getParameter("nombre"));
			objUsua.setApePat(request.getParameter("apePat"));
			objUsua.setApeMat(request.getParameter("apeMat"));
			objUsua.setSexo(request.getParameter("sexo"));
			objUsua.setTelefono(request.getParameter("tel"));
			objUsua.setEmail(request.getParameter("email"));
			objUsua.setFecReg(sdfFormateador.parse(strFecReg));
			objUsua.setFecAct(sdfFormateador.parse(strFecAct));
			objUsua.setDistrito(request.getParameter("distrito"));
			
			String strMensaje = servicio.modificar(objUsua);
		
		
			List<UsuarioDTO> usuario=servicio.listaPorNombre("");
			
			request.setAttribute("li_usuario", usuario);
			request.setAttribute("st_mensaje", strMensaje);
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/CUR02 1 MantenimientoUsuarios.jsp");
			dispatcher.forward(request, response);
			
			} catch (Exception e) {
				e.printStackTrace();
			}
		
	}

	private void cargarDatos(HttpServletRequest request, HttpServletResponse response) {
		
		String strCodigo = request.getParameter("usuario");
		
		try {
			
			UsuarioDTO objUsuario = servicio.buscarUsuarioPorCodigo(strCodigo);
			List<DistritoDTO> lstDistritos = servicio.listaDistritos();
			List<TipoUsuarioDTO> lstTipos = servicio.listaTipos();
			
			request.setAttribute("b_usuario", objUsuario);
			request.setAttribute("li_distritos", lstDistritos);
			request.setAttribute("li_tipos", lstTipos);
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/CUR02 3 ModificarUsuario.jsp");
			dispatcher.forward(request, response);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private void insertar(HttpServletRequest request, HttpServletResponse response) {
		
		java.util.Date dtFechaAct = new Date();
		SimpleDateFormat sdfFormateador = new SimpleDateFormat("dd/MM/yy ");
		String strFecReg = sdfFormateador.format(dtFechaAct);
		String strFecAct = sdfFormateador.format(dtFechaAct);
		String strMensaje = null;
		UsuarioDTO objUsua = new UsuarioDTO();
		
		try {
			
			objUsua.setCodigo(request.getParameter("cod"));
			objUsua.setNombre(request.getParameter("nombre"));
			objUsua.setApePat(request.getParameter("apePat"));
			objUsua.setApeMat(request.getParameter("apeMat"));
			objUsua.setSexo(request.getParameter("sexo"));
			objUsua.setTelefono(request.getParameter("tel"));
			objUsua.setEmail(request.getParameter("email"));
			objUsua.setFecReg(sdfFormateador.parse(strFecReg));
			objUsua.setFecAct(sdfFormateador.parse(strFecAct));
			objUsua.setEstado("DESACTIVADO");
			objUsua.setDistrito(request.getParameter("distrito"));
			objUsua.setCodTipo(request.getParameter("tipo"));
			objUsua.setLogin(request.getParameter("login"));
			objUsua.setPassword(request.getParameter("password"));
			
		} catch (ParseException e) {
			e.printStackTrace();
		} 
		
		try {
			
			strMensaje = servicio.insertarUsuario(objUsua);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		try {
			
			List<UsuarioDTO> lstUsuarios = servicio.listaPorNombre("");
			
			request.setAttribute("li_usuario", lstUsuarios);
			request.setAttribute("st_mensaje", strMensaje);
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/CUR02 1 MantenimientoUsuarios.jsp");
			dispatcher.forward(request, response);
			
			} catch (Exception e) {
				e.printStackTrace();
			}
	}

	private void desactivar(HttpServletRequest request, HttpServletResponse response) {

		String strCodigo = request.getParameter("usuario");
		UsuarioDTO objCandidato = new UsuarioDTO();
		objCandidato.setCodigo(strCodigo);
		
		try {
			
			String strMensaje = servicio.desactivarUsuario(objCandidato);
		
			List<UsuarioDTO> lstUsuarios = servicio.listaPorNombre("");
			
			request.setAttribute("li_usuario", lstUsuarios);
			request.setAttribute("st_mensaje", strMensaje);
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/CUR02 1 MantenimientoUsuarios.jsp");
			dispatcher.forward(request, response);
			
			} catch (Exception e) {
				e.printStackTrace();
			}
		
	}
	
	private void activar(HttpServletRequest request, HttpServletResponse response) {
		
		String strCodigo=request.getParameter("usuario");
		UsuarioDTO objCandidato = new UsuarioDTO();
		objCandidato.setCodigo(strCodigo);
		
		try {
			
			String strMensaje = servicio.activarUsuario(objCandidato);
		
			List<UsuarioDTO> lstUsuarios = servicio.listaPorNombre("");
			
			request.setAttribute("li_usuario", lstUsuarios);
			request.setAttribute("st_mensaje", strMensaje);
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/CUR02 1 MantenimientoUsuarios.jsp");
			dispatcher.forward(request, response);
			
			} catch (Exception e) {
				e.printStackTrace();
			}
		
	}

	private void listar(HttpServletRequest request, HttpServletResponse response) {
		
		try {
			
			List<UsuarioDTO> lstUsuarios = servicio.listaPorNombre("");
			request.setAttribute("li_usuario", lstUsuarios);
			RequestDispatcher dispatche = getServletContext().getRequestDispatcher("/CUR02 1 MantenimientoUsuarios.jsp");
			dispatche.forward(request, response);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	private void nuevoUsuario(HttpServletRequest request,HttpServletResponse response) {
		
		try {
			
			List<DistritoDTO> lstDistritos = servicio.listaDistritos();
			List<TipoUsuarioDTO> lstTipos = servicio.listaTipos();
			request.setAttribute("li_distritos", lstDistritos);
			request.setAttribute("li_tipos", lstTipos);
			RequestDispatcher dispatche = getServletContext().getRequestDispatcher("/CUR02 2 IngresarUsuario.jsp");
			dispatche.forward(request, response);
			
			} catch (Exception e) {
				e.printStackTrace();
			}
			
	}
    
	
}
